package com.zmn.oms.zmn.business.interfaces.tmall;

import com.zmn.oms.common.exception.OmsBaseException;
import com.zmn.oms.model.dto.order.proxy.*;

/**
 * 类描述：订单天猫接口类
 *
 * @author yule
 * @date 2019/10/25 01:53
 */
public interface TmallOrderBService {
    /**
     * 修改预约时间
     *
     * @param dutyTimeDTO
     */
    void updateOrderWorkDutyTime(OrderDutyTimeDTO dutyTimeDTO) throws OmsBaseException;

    /**
     * 勤鸽签到
     * 签到成功-->记录日志
     * 签到失败（连续三次失败）-->后台签到(只进行存储签到失败状态)
     *
     * @param signInSuccessDTO
     */
    void signIn(SignInDTO signInSuccessDTO) throws Exception;

    /**
     * 勤鸽工人接单（啄木鸟领单）
     * 工人接单-->变更工单状态到已领单
     * @param masterTakeDTO
     */
    void updateMasterTake(OrderMasterTakeDTO masterTakeDTO) throws OmsBaseException;

    /**
     * 勤鸽工人放弃工单（派单撤回）
     * 工人弃单-->更改为派单撤回
     *
     * @param distributeBackDTO
     */
    void updateDistributeBack(DistributeBackDTO distributeBackDTO) throws OmsBaseException;

    /**
     * 核销（勤鸽工单完成）
     *
     * @param signInDTO
     */
    void updateVerificationStatus(SignInDTO signInDTO) throws Exception;

    /**
     * 挂起（确定下次上门时间）|| 挂起（不确定下次上门时间）
     *
     * @param hangUpDTO
     */
    void orderHangUp(OrderHangUpDTO hangUpDTO) throws Exception;

    /**
     * 预约失败
     *
     * @param reserveFailedDTO
     */
    void orderReserveFailed(OrderReserveFailedDTO reserveFailedDTO) throws Exception;

    /**
     * 修改用户期望时间
     *
     * @param orderDutyTimeDTO
     */
    void updateExpectDate(OrderDutyTimeDTO orderDutyTimeDTO) throws Exception;

}
